home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 121 / Computer Shopper 121 / Computer Shopper 121.iso / HomeBus / CapitalG / CAPGOLD / DISK3 / SETUP.3 / system / fengine.sys < prev    next >
Encoding:
Text File  |  1997-05-20  |  27.6 KB  |  1,128 lines

  1.  
  2. BEGIN EDIT STTRND
  3.     if #SAME(@old_chtype,STTRNH.CHTYPE)
  4.         SUB SAVE_OLD_QUANTITIES
  5.     endif
  6. END
  7.  
  8. BEGIN NEW STTRND
  9.     ; always set the following for all new records
  10.     CDQTYREDEL=0
  11.     CDSTATUS=0
  12.     CDCREATION=$system_date
  13. END
  14.  
  15. BEGIN UPDATE STTRND
  16.     if #ISNEW(STTRND)
  17.         select STTRNH.CHTYPE
  18.         case "3","4","5","8"
  19.             ;3 stock receipt ,4 issue, 5 return, 8 adjustment
  20.             CDQTYREDEL=CDQUANTITY
  21.             if $FORMNAME="STOCKMOVEMENT"
  22.                 CDGOODSOVR=CDGOODSVAL
  23.             endif
  24.         case "1"
  25.             ;purchase order
  26.             CDGOODSOVR=CDGOODSVAL
  27.         endselect
  28.     else
  29.         if #DIFF(@old_chtype,STTRNH.CHTYPE)
  30.             ;this is to handle the change of a transaction type (upgrade)
  31.             select @old_chtype
  32.             case "E","F"
  33.                 ;proforma, quotation
  34.                 CDCREATION=STTRNH.CHCREATION
  35.             endselect
  36.         endif
  37.     endif
  38.  
  39.     ;keep the following fields inline with the header record
  40.     CDTYPE=STTRNH.CHTYPE
  41.     CDTRANNO=STTRNH.CHTRANNO
  42.     CDDOCNO=STTRNH.CHDOCNO
  43.     CDTXNDATE=STTRNH.CHTXNDATE
  44.     CDRELDATE=STTRNH.CHRELDATE
  45.  
  46.     ; If the txn has a prod id then it must be valid. Look up it's
  47.     ; product type can be 0,1 or 2 else if no prod id then set it
  48.     ; to a type "3"
  49.     if #DIFF($FORMNAME,"INVOICEORDERS")
  50.         ; Not called from Invoice Orders form
  51.         if #SAME(CDPRODID,"")
  52.             CDPRODTYPE="3"    
  53.         else
  54.             FIND STNAME STNAME.CNPRODID=STTRND.CDPRODID
  55.             CDPRODTYPE=STNAME.CNPRODTYPE
  56.         endif
  57.     endif
  58.  
  59.     select CDTYPE
  60.     case "1"
  61.         ;purchase order
  62.         SUB UPDATE_STOCK_HEADER
  63.         if $FORMNAME="RECEIVEPORDER"
  64.             SUB SET_ORDER_TXN_STATUS
  65.         elseif CDSTATUS=0
  66.             CDQTYBAL=CDQUANTITY    
  67.         endif
  68.  
  69.     Case "3"
  70.         ;stock receipt
  71.         CDSTATUS=2
  72.         CDQTYBAL=0
  73.         CDQTYREDEL=CDQUANTITY
  74.         CDGOODSVAL=#mult(CDQUANTITY,CDPRICE)
  75.         CDGOODSOVR=CDGOODSVAL
  76.         SUB UPDATE_STOCK_HEADER
  77.  
  78.     Case "4"
  79.         ;stock issue
  80.         SUB SET_ORDER_TXN_STATUS
  81.         if $FORMNAME="INVOICEORDERS"
  82.             CDPRINTED="NP"
  83.         else
  84.             ;get VAT rate.
  85.             FIND VATRATES VATCODE=CDVATCODE
  86.             if #RECORDCOUNT("VATRATES")
  87.                 CDVATRATE=VATRATES.VATRATE
  88.             endif
  89.             if $FORMNAME="INVOICESTOCK"
  90.                 CDPRINTED=~CD_PRINTED
  91.             else
  92.                 CDQTYBAL=0
  93.                 if $FORMNAME="STOCKMOVEMENT"
  94.                     CDGOODSVAL=#mult(CDQUANTITY,CDPRICE)
  95.                     CDGOODSOVR=CDGOODSVAL
  96.                 endif
  97.             endif
  98.             CDQTYREDEL=CDQUANTITY
  99.             if CDPRODTYPE="2"
  100.                 CDPROFIT=#sub(CDGOODSOVR,#mult(STNAME.CNAVGCOS,CDQUANTITY))
  101.             endif
  102.             SUB UPDATE_STOCK_HEADER
  103.         endif
  104.         select $FORMNAME
  105.         case "INVOICESTOCK"
  106.             ; don't want to create SL analysis records
  107.             ; for free text
  108.             if CDQUANTITY            
  109.                 NEW SLANDT
  110.                     SLANDT.SAANALHEAD=CDANALHEAD                
  111.                     SLANDT.SAREF=CDDOCNO
  112.                     SLANDT.SATYPE="I"
  113.                     SLANDT.SAVATCODE=CDVATCODE
  114.                     SLANDT.SAVALUE=CDGOODSOVR
  115.                     SLANDT.SAPRODID=CDPRODID
  116.                     SLANDT.SACOMMENT=~description
  117.                 UPDATE SLANDT
  118.             endif
  119.         case "INVOICEORDERS"
  120.             ; don't want to create SL analysis records
  121.             ; for free text
  122.             if CDQUANTITY            
  123.                 NEW SLANDT
  124.                     SLANDT.SAANALHEAD=CDANALHEAD                
  125.                     SLANDT.SAREF=CDDOCNO
  126.                     SLANDT.SATYPE="I"
  127.                     SLANDT.SAVATCODE=CDVATCODE
  128.                     SLANDT.SAVATRATE=CDVATRATE
  129.                     SLANDT.SAVALUE=CDGOODSOVR
  130.                     SLANDT.SAPRODID=CDPRODID
  131.                     SLANDT.SACOMMENT=~description
  132.                 UPDATE SLANDT
  133.             endif
  134.         endselect
  135.  
  136.     Case "5"
  137.         ;stock return
  138.         SUB SET_ORDER_TXN_STATUS
  139.         CDQTYBAL=0
  140.         select $FORMNAME
  141.         case "STOCKMOVEMENT"
  142.             CDGOODSVAL=#mult(CDQUANTITY,CDPRICE)
  143.             CDGOODSOVR=CDGOODSVAL
  144.         case "CREDITSTOCK"
  145.             CDPRINTED=~CD_PRINTED
  146.             ;get VAT rate.
  147.             FIND VATRATES VATCODE=CDVATCODE
  148.             CDVATRATE=VATRATES.VATRATE
  149.         endselect    
  150.         CDQTYREDEL=CDQUANTITY
  151.         if CDPRODTYPE="2"
  152.             CDPROFIT=#sub(CDGOODSOVR,#mult(STNAME.CNAVGCOS,CDQUANTITY))
  153.             CDPROFIT=#NEGATE(CDPROFIT)
  154.         endif
  155.         SUB UPDATE_STOCK_HEADER
  156.         select $FORMNAME
  157.         case "CREDITSTOCK"
  158.             if CDQUANTITY            
  159.                 NEW SLANDT
  160.                     SLANDT.SAANALHEAD=CDANALHEAD                
  161.                     SLANDT.SAREF=CDDOCNO
  162.                     SLANDT.SATYPE="C"
  163.                     SLANDT.SAVATCODE=CDVATCODE
  164.                     SLANDT.SAVALUE=#NEGATE(CDGOODSOVR)
  165.                     SLANDT.SAPRODID=CDPRODID
  166.                     SLANDT.SACOMMENT=~description
  167.                 UPDATE SLANDT
  168.             endif
  169.         endselect
  170.  
  171.     Case "8"
  172.         ;stock adjustment
  173.         CDSTATUS=2
  174.         SUB UPDATE_STOCK_HEADER
  175.  
  176.     case "B"
  177.         ;Sales Order 
  178.         SUB UPDATE_STOCK_HEADER
  179.         if $FORMNAME="RELEASESORDER"
  180.             SUB SET_ORDER_TXN_STATUS
  181.         else
  182.             if CDSTATUS=0
  183.                 CDQTYBAL=CDQUANTITY    
  184.             endif            
  185.         endif
  186.  
  187.     case "E","F"
  188.         ; quote or proforma
  189.         CDQTYBAL=CDQUANTITY    
  190.  
  191.     endselect
  192. END
  193.  
  194. BEGIN DELETE STTRND
  195.     select CDPRODTYPE
  196.     case "2" 
  197.         ;full stock item (no effect on the stock file unless this type)
  198.         FIND STNAME CNPRODID=CDPRODID
  199.         EDIT STNAME
  200.         select CDTYPE
  201.         case "1"
  202.             ;purchase order
  203.             ;reduce the on order value by the transaction quantity
  204.             STNAME.CNQTYONORD=#sub(STNAME.CNQTYONORD,CDQTYBAL)
  205.         case "B"
  206.             ;sales order
  207.             ;reduce the allocated value by the transaction quantity
  208.             STNAME.CNQTYALLOC=#sub(STNAME.CNQTYALLOC,CDQTYBAL)
  209.         endselect
  210.         UPDATE STNAME
  211.     endselect
  212. END
  213.  
  214.  
  215. BEGIN NEW STTRNH
  216.     CHTRANNO=~txn_batch    
  217.     CHCREATION=$system_date
  218.     CHTYPE=~document_type
  219.     CHDOCNO=~document_number
  220.  
  221.     select CHTYPE
  222.     case "1","B","E","F"
  223.         ;purchase order, sales order, proforma, quotation
  224.         ;status is outstanding (still active)
  225.         CHSTATUS="0"
  226.     case "3"
  227.         ;receipt
  228.         CHTOTVALUE=0
  229.         CHSTATUS="2"
  230.  
  231.     case "4"
  232.         ;issue - it's status will depend which form is creating it
  233.         ;the stock movements or the release sales orders.
  234.         if $FORMNAME="RELEASESORDER"
  235.             CHSTATUS="0"
  236.         else
  237.             CHSTATUS="2"
  238.         endif
  239.  
  240.     default
  241.         CHSTATUS="2"
  242.  
  243.     endselect
  244. END
  245.  
  246. BEGIN EDIT STTRNH
  247.     ;type may change if type gets promoted
  248.     @old_chtype=CHTYPE
  249. END
  250.  
  251. BEGIN UPDATE STTRNH
  252.     if #ISEDIT(STTRNH)
  253.         if $FORMNAME="INVOICEORDERS"
  254.             ;if invoicing orders then...
  255.             ; update STTRNH for issue
  256.             CHORIGDOC=CHDOCNO
  257.             CHDOCNO=~document_number
  258.             CHSTATUS=2
  259.             CHPRINTED="NP"
  260.             ; create SLTRAN for issue
  261.             NEW SLTRAN
  262.                 SLTRAN.STACCOUNT=CHACCID
  263.                 SLTRAN.STTYPE="I"
  264.                 SLTRAN.STTXNDATE=CHTXNDATE
  265.                 SLTRAN.STREF=CHDOCNO
  266.                 SLTRAN.STVALUE=CHTOTVALUE
  267.                 SLTRAN.STVAT=CHTOTVAT
  268.                 SLTRAN.STDATEDUE=CHDUEDEL
  269.                 SLTRAN.STDSGDS=CHTOTTXGDS
  270.                 SLTRAN.STTRANNO=CHTRANNO
  271.                 if #SAME(SLTRAN.STVALUE,0)
  272.                     SLTRAN.STALLOC="P"
  273.                 endif
  274.             UPDATE SLTRAN
  275.             ; loop and update all sttrnd's for the
  276.             ; current STTRNH being processed
  277.             FIND STTRND CDTRANNO=STTRNH.CHTRANNO
  278.             @numrecords=#RECORDCOUNT("STTRND")
  279.                 While #GREATER(@numrecords,0)
  280.                        EDIT STTRND
  281.                        UPDATE STTRND
  282.                 NEXT STTRND
  283.                 @numrecords=#SUB(@numrecords,1)
  284.             Wend
  285.             ;create carrage analysis (if there is any)
  286.             if CHNETCARR
  287.                 NEW SLANDT
  288.                     SLANDT.SAANALHEAD=CHCARRGRP                
  289.                     SLANDT.SAREF=CHDOCNO
  290.                     SLANDT.SATYPE="I"
  291.                     SLANDT.SAVATCODE=CHCARRVCD
  292.                     SLANDT.SAVATRATE=CHCARRVP
  293.                     SLANDT.SAVALUE=CHNETCARR
  294.                 UPDATE SLANDT
  295.             endif
  296.         endif
  297.         if #DIFF(@old_chtype,CHTYPE)
  298.             ;this is to handle the change of a transaction type (upgrade)
  299.             select @old_chtype
  300.             case "E","F"
  301.                 ;proforma, quotation
  302.                 CHORIGDOC=CHDOCNO
  303.                 CHDOCNO=~document_number
  304.                 CHTRANNO=~txn_batch    
  305.                 CHCREATION=$system_date
  306.                 CHSTATUS="0"    
  307.             endselect
  308.         endif
  309.     endif
  310.  
  311.     select CHTYPE
  312.     case "1"
  313.         ;purchase order
  314.         CHTOTGOODS=CHTOTVALUE
  315.         CHTOTTXGDS=CHTOTGOODS
  316.     
  317.     case "B","E","F"
  318.         ;sales order,proforma, quotation
  319.         CHCARRGRP=$system.CARRGRP
  320.         CHAREACODE=SLNAME.SNANAL2
  321.  
  322.     case "3"
  323.         if $FORMNAME="RECEIVEPORDER"
  324.             CHTXNDATE=$system_date
  325.         endif
  326.  
  327.     case "4"
  328.         ;issue/invoice
  329.         select $FORMNAME
  330.         case "RELEASESORDER"
  331.             CHAREACODE=SLNAME.SNANAL2
  332.             CHSTATUS=0
  333.  
  334.         case "INVOICESTOCK"
  335.             CHCARRGRP=$system.CARRGRP
  336.             CHAREACODE=SLNAME.SNANAL2
  337.             ;set the invoice to complete
  338.             CHSTATUS=2
  339.             ;create invoice transaction
  340.             NEW SLTRAN
  341.                 SLTRAN.STACCOUNT=SLNAME.SNACCOUNT
  342.                 SLTRAN.STTYPE="I"
  343.                 SLTRAN.STREF=CHDOCNO
  344.                 SLTRAN.STVALUE=CHTOTVALUE
  345.                 SLTRAN.STVAT=CHTOTVAT
  346.                 SLTRAN.STDATEDUE=~date_due
  347.                 SLTRAN.STDSGDS=~discount_goods
  348.                 SLTRAN.STTRANNO=CHTRANNO
  349.                 if #SAME(SLTRAN.STVALUE,0)
  350.                     SLTRAN.STALLOC="P"
  351.                 endif
  352.             UPDATE SLTRAN
  353.  
  354.             ;create carrage analysis (if there is any)
  355.             if CHNETCARR
  356.                 NEW SLANDT
  357.                     SLANDT.SAANALHEAD=$system.CARRGRP                
  358.                     SLANDT.SAREF=CHDOCNO
  359.                     SLANDT.SATYPE="I"
  360.                     SLANDT.SAVATCODE=CHCARRVCD
  361.                     SLANDT.SAVALUE=CHNETCARR
  362.                 UPDATE SLANDT
  363.             endif
  364.  
  365.             ;balance the nominal ledger
  366.             if #DIFF(CHTOTVALUE,0)
  367.                 #UPDATENOMINAL($system.DEBTCONT,"S/L","2",CHTOTVALUE,"","_")
  368.             endif
  369.         endselect
  370.  
  371.     case "5"
  372.         ;return / credit
  373.         select $FORMNAME
  374.         case "CREDITSTOCK"
  375.             CHCARRGRP=$system.CARRGRP
  376.             CHAREACODE=SLNAME.SNANAL2
  377.             ;create credit transaction
  378.             NEW SLTRAN
  379.                 SLTRAN.STACCOUNT=SLNAME.SNACCOUNT
  380.                 SLTRAN.STTYPE="C"
  381.                 SLTRAN.STREF=CHDOCNO
  382.                 SLTRAN.STVALUE=#NEGATE(CHTOTVALUE)
  383.                 SLTRAN.STVAT=#NEGATE(CHTOTVAT)
  384.                 SLTRAN.STDATEDUE=SLTRAN.STTXNDATE
  385.                 SLTRAN.STDSGDS=0
  386.                 SLTRAN.STTRANNO=CHTRANNO
  387.                 SLTRAN.STALLOC=~Alloc_Flag
  388.             UPDATE SLTRAN
  389.     
  390.             ;create carrage analysis (if there is any)
  391.             if CHNETCARR
  392.                 NEW SLANDT
  393.                     SLANDT.SAANALHEAD=$system.CARRGRP                
  394.                     SLANDT.SAREF=CHDOCNO
  395.                     SLANDT.SATYPE="C"
  396.                     SLANDT.SAVATCODE=CHCARRVCD
  397.                     SLANDT.SAVALUE=#NEGATE(CHNETCARR)
  398.                 UPDATE SLANDT
  399.             endif
  400.     
  401.             ;balance the nominal ledger
  402.             if #DIFF(CHTOTVALUE,0)
  403.                 #UPDATENOMINAL($system.DEBTCONT,"S/L","2",#NEGATE(CHTOTVALUE),"","_")
  404.             endif
  405.         endselect
  406.     endselect
  407. END
  408.  
  409.  
  410. ;### PURCHASE ###
  411.  
  412. BEGIN NEW PLTRAN
  413.     PTDATE=$system_date
  414.     PTTXNDATE=~txn_date
  415.     PTNOMBATCH=~nom_batch
  416. END
  417.  
  418. BEGIN UPDATE PLTRAN
  419.     @period=~period
  420.     if #ISNEW(PLTRAN)
  421.         PTOUTSTAND=PTVALUE
  422.         PTVATOUT=PTVAT
  423.         select PTTXNTYPE
  424.         case "A"
  425.             PTBATCHNO=@period
  426.             #UPDATENOMINAL(PTNOMACC,"P/L","3",PTVALUE,"","D")
  427.         case "F"
  428.             PTBATCHNO=@period
  429.             #UPDATENOMINAL(PTNOMACC,"P/L","3",PTVALUE,"","D")
  430.             SUB PL_VATCASH
  431.         case "P"
  432.             PTBATCHNO=@period
  433.             #UPDATENOMINAL(PTNOMACC,"P/L","3",PTVALUE,PTREF,"D")
  434.             PTALCBATCH=~alloc_batch
  435.             SUB PL_VATCASH
  436.         case "D"
  437.             PTBATCHNO=@period
  438.             #UPDATENOMINAL(PTNOMACC,"P/L","3",PTVALUE,"","D")
  439.             PTALCBATCH=~alloc_batch
  440.             SUB PL_VATCASH
  441.             PTVAT=0
  442.         case "I","C"
  443.             PTBATCHNO=~txn_batch
  444.             ;invoice or credit note
  445.             ;create the vat analysis record if required
  446.             if PTVAT
  447.                 NEW PLANDT
  448.                     PLANDT.PAVALUE=PTVAT
  449.                     if $system.vatmonths=0
  450.                         PLANDT.PAVATCODE="N"
  451.                     else
  452.                         PLANDT.PAVATCODE="0"
  453.                     endif
  454.                     PLANDT.PATXNTYPE=PTTXNTYPE
  455.                     PLANDT.PAREF=PTREF    
  456.                 UPDATE PLANDT
  457.             endif
  458.             ; if Invoice has been created as 'pay-now'
  459.             ; then set alloc. batch no. and create VATREC
  460.             ; record if using VAT Cash accounting
  461.             if PLTRAN.PTALLOC="P"
  462.                 PTALCBATCH=~alloc_batch
  463.                 SUB PL_VATREC
  464.             endif
  465.         endselect
  466.         EDIT PLNAME
  467.             select PTTXNTYPE
  468.             case "I"
  469.                 PLNAME.PNLASTINV=PTTXNDATE
  470.                                 ;if equal, its a VAT only inv so dont update turnover
  471.                                 if #diff(PTVALUE,PTVAT)
  472.                                         #UPDATEACTUAL("PL",@period,#sub(PTVALUE,PTVAT))
  473.                                 endif
  474.             case "C"
  475.                                 #UPDATEACTUAL("PL",@period,#sub(PTVALUE,PTVAT))
  476.             endselect
  477.             PLNAME.PNCURRBAL=#sum(PLNAME.PNCURRBAL,PLTRAN.PTVALUE)
  478.         UPDATE PLNAME
  479.     else
  480.         select $FORMNAME
  481.         case "PLPAYMENTS"
  482.             ; if during manual allocations a transaction has only had its
  483.             ; disputed flag toggled, without being paid/allocated,
  484.             ; then we don't want to give it an allocation batch no.
  485.             ; or create a VATREC entry (if VAT cash accounting in use).
  486.             @disputedonly=~disputed_only
  487.             if #SAME(@disputedonly,"FALSE")
  488.                 PTALCBATCH=~alloc_batch
  489.                 SUB PL_VATREC
  490.             endif
  491.  
  492.         case "PLAUTOPAYM"
  493.             ; automatic payments, so set allocation batch no. and update
  494.             ; VAT cash if appropriate
  495.             PTALCBATCH=~alloc_batch
  496.             SUB PL_VATREC
  497.  
  498.         endselect
  499.     endif
  500.  
  501.     select PTALLOC
  502.     case "A","P"
  503.         ;if an allocated transaction then clear values
  504.         PTOUTSTAND=0
  505.         PTVATOUT=0
  506.     endselect
  507. END    
  508.  
  509. BEGIN NEW PLANDT
  510.     PACREATION=$system_date
  511.     PADATE=~txn_date
  512.     PANOMBATCH=~nom_batch
  513.     PABATCHNO=~txn_batch
  514.     PACODE=PLNAME.PNCODE
  515.     PAECMEMB=PLNAME.PNECMEMB
  516.     PACOUNTRY=PLNAME.PNCOUNTRY
  517.     PAVATREGNO=PLNAME.PNVATREGNO
  518. END
  519.  
  520. BEGIN UPDATE PLANDT
  521.     if #ISNEW(PLANDT)
  522.         ;first set fields
  523.         if PAVATCODE="0"
  524.             PAANALHEAD=$system.plvatcode
  525.         else
  526.             FIND VATRATES VATCODE=PLANDT.PAVATCODE
  527.             PAVATRATE=VATRATES.VATRATE
  528.         endif
  529.  
  530.         ;search and update header
  531.         FIND PLANHD PHCODE=PAANALHEAD
  532.         EDIT PLANHD
  533.             if #GREATER(#DATESERIAL(PADATE),#DATESERIAL($txn_eopdate))
  534.                 PLANHD.PHTURNADV=#SUM(PLANHD.PHTURNADV,PAVALUE)
  535.             else
  536.                 PLANHD.PHTURNOVER=#SUM(PLANHD.PHTURNOVER,PAVALUE)
  537.                 PLANHD.PHTODATE=#SUM(PLANHD.PHTODATE,PAVALUE)
  538.             endif
  539.         UPDATE PLANHD        
  540.         
  541.         ;now update the nominal
  542.         if PAVATCODE="0"
  543.             PANOMACC=$system.vatinput
  544.         else
  545.             PANOMACC=PLANHD.PHNLCODE
  546.         endif    
  547.         #UPDATENOMINAL(PANOMACC,"P/L","3",PAVALUE,"","C")
  548.     endif
  549. END
  550.  
  551.  
  552. ;### SALES ###
  553.  
  554. BEGIN NEW SLTRAN
  555.     STCREATION=$system_date
  556.     STTXNDATE=~txn_date
  557.     STNOMBATCH=~nom_batch
  558. END
  559.  
  560. BEGIN UPDATE SLTRAN
  561.     @period=~period
  562.     if #ISNEW(SLTRAN)
  563.         if #GREATER(#DATESERIAL(STTXNDATE),#DATESERIAL($txn_eopdate))
  564.             STSTATE="N"
  565.         else
  566.             STSTATE="Y"
  567.         endif
  568.         STOUTSTAND=STVALUE
  569.         STVATOUT=STVAT
  570.         select STTYPE
  571.         case "A"
  572.             ST_IC_NO=@period
  573.             #UPDATENOMINAL(STNOMACC,"S/L","2",#NEGATE(STVALUE),"","B")
  574.             STVAT=0
  575.         case "F"
  576.             ST_IC_NO=@period
  577.             #UPDATENOMINAL(STNOMACC,"S/L","2",#NEGATE(STVALUE),"","B")
  578.             SUB SL_VATCASH
  579.         case "D"
  580.             ST_IC_NO=@period
  581.             #UPDATENOMINAL(STNOMACC,"S/L","2",#NEGATE(STVALUE),"","B")
  582.             STALCBATCH=~alloc_batch
  583.             SUB SL_VATCASH
  584.             STVAT=0
  585.         case "R"
  586.             ST_IC_NO=@period
  587.             #UPDATENOMINAL(STNOMACC,"S/L","2",#NEGATE(STVALUE),~slipref,"B")
  588.             STALCBATCH=~alloc_batch
  589.             SUB SL_VATCASH
  590.         case "I","C"
  591.             ST_IC_NO=~txn_batch
  592.             ;invoice or credit note
  593.             ;create the vat analysis record if required
  594.             if STVAT
  595.                 NEW SLANDT
  596.                     SLANDT.SAVALUE=STVAT
  597.                     if $system.vatmonths=0
  598.                         SLANDT.SAVATCODE="N"
  599.                     else
  600.                         SLANDT.SAVATCODE="0"
  601.                     endif
  602.                     SLANDT.SATYPE=STTYPE
  603.                     SLANDT.SAREF=STREF    
  604.                 UPDATE SLANDT
  605.             endif
  606.             ; if Invoice has been created as 'pay-now'
  607.             ; then set alloc. batch no. and create VATREC
  608.             ; record if using VAT Cash accounting
  609.             if $FORMNAME="SLINV"
  610.                 if SLTRAN.STALLOC="P" 
  611.                     STALCBATCH=~alloc_batch
  612.                     SUB SL_VATREC
  613.                 endif
  614.             endif
  615.         endselect
  616.         EDIT SLNAME
  617.             select STTYPE
  618.             case "I"
  619.                 SLNAME.SNLASTINV=STTXNDATE
  620.                 ;if equal, its a VAT only inv so dont update turnover
  621.                 if #diff(STVALUE,STVAT)
  622.                     #UPDATEACTUAL("SL",@period,#sub(STVALUE,STVAT))
  623.                 endif
  624.             case "C"
  625.                 #UPDATEACTUAL("SL",@period,#sub(STVALUE,STVAT))
  626.             endselect
  627.             SLNAME.SNBALANCE=#sum(SLNAME.SNBALANCE,SLTRAN.STVALUE)
  628.         UPDATE SLNAME
  629.     else
  630.         if $FORMNAME="SLRECEIPTS"
  631.             ; if during allocations a transaction has only had its
  632.             ; disputed flag toggled, without being paid/allocated,
  633.             ; then we don't want to give it an allocation batch no.
  634.             ; or create a VATREC entry (if VAT cash accounting in use).
  635.             @disputedonly=~disputed_only
  636.             if #SAME(@disputedonly,"FALSE")
  637.                 STODUETYPE=""
  638.                 STALCBATCH=~alloc_batch
  639.                 SUB SL_VATREC
  640.             endif
  641.         endif
  642.     endif
  643.     select STALLOC
  644.     case "A","P"
  645.         ;if an allocated transaction then clear values
  646.         STOUTSTAND=0
  647.         STVATOUT=0
  648.     endselect
  649. END    
  650.  
  651. BEGIN NEW SLANDT
  652.     SADATE=~txn_date
  653.     SACREATION=$system_date
  654.     SANOMBATCH=~nom_batch
  655.     SA_IC_NO=~txn_batch
  656.     SAACCOUNT=SLNAME.SNACCOUNT
  657.     SAECMEMB=SLNAME.SNECMEMB
  658.     SACOUNTRY=SLNAME.SNCOUNTRY
  659.     SAVATREGNO=SLNAME.SNVATREGNO
  660.     SASUBANAL=SLNAME.SNANAL2
  661. END
  662.  
  663. BEGIN UPDATE SLANDT
  664.     if #ISNEW(SLANDT)
  665.         ;if this is a vat analysis record 
  666.         ;we know exactly which account to set
  667.         ;the header to
  668.         if SAVATCODE="0"
  669.             SAANALHEAD=$system.slvatcode
  670.         elseif #DIFF($FORMNAME,"INVOICEORDERS")
  671.             FIND VATRATES VATCODE=SLANDT.SAVATCODE
  672.             SAVATRATE=VATRATES.VATRATE
  673.         endif
  674.  
  675.         ;update analysis header
  676.         FIND SLANHD SHCODE=SAANALHEAD
  677.         EDIT SLANHD
  678.             if #GREATER(#DATESERIAL(SADATE),#DATESERIAL($txn_eopdate))
  679.                 SLANHD.SHTURNADV=#SUM(SLANHD.SHTURNADV,SAVALUE)
  680.             else
  681.                 SLANHD.SHTURNOVER=#SUM(SLANHD.SHTURNOVER,SAVALUE)
  682.                 SLANHD.SHTODATE=#SUM(SLANHD.SHTODATE,SAVALUE)
  683.             endif
  684.         UPDATE SLANHD        
  685.  
  686.         ;use the system parameters to determine which
  687.         ;is the correct nominal code when this
  688.         ;is a vat transaction
  689.         if SAVATCODE="0"
  690.             SANOMACC=$system.vatoutput
  691.         else
  692.             SANOMACC=SLANHD.SHNOMINAL
  693.         endif
  694.         if #DIFF(SAVALUE,0)
  695.             #UPDATENOMINAL(SANOMACC,"S/L","2",#NEGATE(SAVALUE),"","A")
  696.         else
  697.             SANOMBATCH=""
  698.         endif
  699.     endif
  700. END
  701.  
  702.  
  703.  
  704. ;#### NOMINAL ####
  705. BEGIN EDIT NLTRAN
  706.     @oldntvalue=NTVALUE
  707. END
  708. BEGIN UPDATE NLTRAN
  709.     ;if creating a new nltran record
  710.     ;update the nominal account balance
  711.     if #ISNEW(NLTRAN)
  712.         NTENTRYNO=~nom_batch
  713.         NTPOSTDATE=$system_date
  714.         NTTXNDATE=~txn_date
  715.     endif
  716.     
  717.     FIND NLNAME NNACCOUNT=NTCODE
  718.     EDIT NLNAME
  719.         if #ISNEW(NLTRAN)
  720.             NTRECONCIL=NLNAME.NNACCTYPE
  721.             #UPDATEACTUAL("NL",~nom_batch,NTVALUE)
  722.         else
  723.             #UPDATEACTUAL("NL",~nom_batch,#sub(NTVALUE,@oldntvalue))
  724.         endif
  725.     UPDATE NLNAME
  726.  
  727.     select $FORMNAME
  728.     case "CASHBOOK","POSTJOURNAL"
  729.         FIND VATRATES VATCODE=NTVATCODE
  730.         if #RECORDCOUNT("VATRATES")
  731.             NTVATRATE=VATRATES.VATRATE
  732.         endif
  733.     endselect
  734.  
  735. END
  736.  
  737. BEGIN UPDATE NLJRNL
  738.     NLJRNL.NJENTRYNO=~nom_batch
  739.     NLJRNL.NJDATE=$system_date
  740.     NLJRNL.NJPRINTED=""
  741.     Select NLJRNL.NJTYPE
  742.     case "2"
  743.         NLJRNL.NJNARATIVE="Sales-Posting"
  744.     case "3"
  745.         NLJRNL.NJNARATIVE="Purchase-Posting"
  746.     endselect
  747. END
  748.  
  749.  
  750. ;##### FUNCTIONS ######
  751. SUB CALC_AVERAGE_COST
  752.     ;adding to stock - average out the cost price
  753.     if #GREATER(0,STNAME.CNQTYINST)
  754.         if #GREATER(STTRND.CDPRICE,0)
  755.             if STTRND.CDTYPE="5"
  756.                 STNAME.CNAVGCOS=STNAME.CNCOSPRICE
  757.             else
  758.                 STNAME.CNAVGCOS=STTRND.CDPRICE
  759.             endif
  760.         endif
  761.     else
  762.         @stval=#mult(STNAME.CNAVGCOS,STNAME.CNQTYINST)
  763.         if STTRND.CDTYPE="5"
  764.             @ordval=#mult(STNAME.CNCOSPRICE,STTRND.CDQUANTITY)
  765.         else
  766.             @ordval=#mult(STTRND.CDPRICE,STTRND.CDQUANTITY)
  767.         endif
  768.         @totval=#sum(@stval,@ordval)
  769.         @newqty=#sum(STNAME.CNQTYINST,STTRND.CDQUANTITY)
  770.         STNAME.CNAVGCOS=#div(@totval,@newqty)            
  771.     endif
  772. END
  773.  
  774. SUB SET_ORDER_TXN_STATUS
  775.     select $FORMNAME
  776.     case "RECEIVEPORDER","RELEASESORDER"
  777.         if STTRND.CDTYPE="4"
  778.             ;issue awaiting invoicing
  779.             STTRND.CDSTATUS=0
  780.         else
  781.             ;product only,full stock item
  782.             if #GREATER(STTRND.CDQTYBAL,0)
  783.                 ;part received/released order
  784.                 STTRND.CDSTATUS=1
  785.             else
  786.                 ;completed order transaction
  787.                 STTRND.CDSTATUS=2
  788.                 ;Note: If balance is not left on order we mark status 
  789.                 ;as completed but we must additionally restore the 
  790.                 ;discarded balance (for use elsewhere).
  791.                 STTRND.CDQTYBAL=~CD_QTYBAL
  792.             endif
  793.         endif
  794.     
  795.     case "STOCKMOVEMENT"
  796.         ; postings made using these forms are always
  797.         ; immediately fully satisfied.
  798.         STTRND.CDSTATUS=2
  799.  
  800.     case "INVOICESTOCK"
  801.         ; ask calling prog for status as it depends
  802.         ; if it's printed real time or by batch
  803.         STTRND.CDSTATUS=~CD_STATUS
  804.  
  805.     case "CREDITSTOCK"
  806.         ; these transactions are complete
  807.         STTRND.CDSTATUS=2
  808.  
  809.     case "INVOICEORDERS"
  810.         ; when a released order becomes invoiced 
  811.         ; it's issues are now fully satisfied.
  812.         STTRND.CDSTATUS=1
  813.     endselect
  814. END
  815.  
  816.  
  817. SUB SAVE_OLD_QUANTITIES
  818.     ;store the transaction quantity and balance for use
  819.     ;in the stock update routines.
  820.     @old_cdquantity=STTRND.CDQUANTITY    
  821.     @old_cdqtybal=STTRND.CDQTYBAL
  822. END
  823.  
  824. SUB UPDATE_STOCK_HEADER
  825.  
  826.     ;if this is a new transaction then there are no old
  827.     ;quantities to be saved so ensure that the temporary
  828.     ;variables are cleared.
  829.     if #ISNEW(STTRND)
  830.         @old_cdquantity=0
  831.         @old_cdqtybal=0
  832.     endif
  833.  
  834.     select STTRND.CDPRODTYPE
  835.     case "1"
  836.         ;product only issue
  837.         select STTRND.CDTYPE
  838.         case "4","5"
  839.             EDIT STNAME
  840.             STNAME.CNLASTISS=STTRND.CDTXNDATE
  841.             if #GREATER(#DATEDIFFERENCE(STNAME.CNLASTISS,$TXN_EOPDATE),0)
  842.                 if STTRND.CDTYPE="4"
  843.                     STNAME.CNQTYISSAD=#sum(STNAME.CNQTYISSAD,STTRND.CDQUANTITY)
  844.                 else
  845.                     STNAME.CNQTYISSAD=#sub(STNAME.CNQTYISSAD,STTRND.CDQUANTITY)
  846.                 endif
  847.             else
  848.                 if STTRND.CDTYPE="4"
  849.                     STNAME.CNQTYISS0=#sum(STNAME.CNQTYISS0,STTRND.CDQUANTITY)
  850.                 else
  851.                     STNAME.CNQTYISS0=#sub(STNAME.CNQTYISS0,STTRND.CDQUANTITY)
  852.                 endif
  853.             endif
  854.             UPDATE STNAME
  855.         endselect
  856.  
  857.     case "2"
  858.         ;full stock item processing
  859.         EDIT STNAME
  860.         select STTRND.CDTYPE
  861.         case "1"
  862.             ;purchase order
  863.             if $FORMNAME="POSTPORDER"
  864.                 ;create/edit part
  865.                 ;if this is an edit @old_cdquantity will have to be
  866.                 ;removed from the stock allocated quantity before
  867.                 ;adding on the new value.
  868.                 STNAME.CNQTYONORD=#sub(STNAME.CNQTYONORD,@old_cdquantity)
  869.                 ;now uplift the allocated quantity by the value of
  870.                 ;the transaction.
  871.                 STNAME.CNQTYONORD=#sum(STNAME.CNQTYONORD,STTRND.CDQUANTITY)
  872.             else
  873.                 ;receipt part
  874.                 ;reduce the on order value by the latest received value
  875.                 STNAME.CNQTYONORD=#sub(STNAME.CNQTYONORD,@old_cdqtybal)
  876.                 STNAME.CNQTYONORD=#sum(STNAME.CNQTYONORD,STTRND.CDQTYBAL)
  877.             endif
  878.  
  879.         Case "3"
  880.             ;stock receipt
  881.             SUB CALC_AVERAGE_COST
  882.             if #DIFF(STTRND.CDPRICE,0)
  883.                 STNAME.CNCOSPRICE=STTRND.CDPRICE
  884.             endif
  885.             STNAME.CNQTYINST=#sum(STNAME.CNQTYINST,STTRND.CDQUANTITY)
  886.  
  887.         Case "4"
  888.             ;stock issue
  889.             STNAME.CNQTYINST=#sub(STNAME.CNQTYINST,STTRND.CDQUANTITY)
  890.             if $FORMNAME="RELEASESORDER"
  891.                 STNAME.CNLASTISS=STTRNH.CHRELDATE
  892.             else
  893.                 STNAME.CNLASTISS=STTRND.CDTXNDATE
  894.             endif
  895.             if #GREATER(#DATEDIFFERENCE(STNAME.CNLASTISS,$TXN_EOPDATE),0)
  896.                 STNAME.CNQTYISSAD=#sum(STNAME.CNQTYISSAD,STTRND.CDQUANTITY)
  897.             else
  898.                 STNAME.CNQTYISS0=#sum(STNAME.CNQTYISS0,STTRND.CDQUANTITY)
  899.             endif            
  900.  
  901.         Case "5"
  902.             ;stock return
  903.             SUB CALC_AVERAGE_COST
  904.             STNAME.CNQTYINST=#sum(STNAME.CNQTYINST,STTRND.CDQUANTITY)
  905.             if #GREATER(#DATEDIFFERENCE(STTRND.CDTXNDATE,$TXN_EOPDATE),0)
  906.                 STNAME.CNQTYISSAD=#sub(STNAME.CNQTYISSAD,STTRND.CDQUANTITY)
  907.             else
  908.                 STNAME.CNQTYISS0=#sub(STNAME.CNQTYISS0,STTRND.CDQUANTITY)
  909.             endif            
  910.  
  911.         Case "8"
  912.             ;stock adjustment
  913.             if #GREATER(STTRND.CDQUANTITY,0)
  914.                 SUB CALC_AVERAGE_COST            
  915.             endif
  916.             STNAME.CNQTYINST=#sum(STNAME.CNQTYINST,STTRND.CDQUANTITY)
  917.  
  918.         case "B"
  919.             ;Sales Order 
  920.             if $FORMNAME="POSTSORDER"
  921.                 ;if this is an edit @old_cdquantity will have to be
  922.                 ;removed from the stock allocated quantity before
  923.                 ;adding on the new value.
  924.                 ;do NOT reduce allocated quantity on upgrading a quotation.
  925.                 if #SAME(@old_chtype,STTRNH.CHTYPE)
  926.                     STNAME.CNQTYALLOC=#sub(STNAME.CNQTYALLOC,@old_cdquantity)
  927.                 endif
  928.                 ;now uplift the allocated quantity by the value of
  929.                 ;the transaction.
  930.                 STNAME.CNQTYALLOC=#sum(STNAME.CNQTYALLOC,STTRND.CDQUANTITY)
  931.             else
  932.                 ;released sales order
  933.                 ;reduce the on alloc value by the latest released value
  934.                 STNAME.CNQTYALLOC=#sub(STNAME.CNQTYALLOC,@old_cdqtybal)
  935.                 STNAME.CNQTYALLOC=#sum(STNAME.CNQTYALLOC,STTRND.CDQTYBAL)
  936.             endif
  937.  
  938.         endselect
  939.         UPDATE STNAME
  940.     endselect
  941. END
  942.  
  943. SUB SL_VATCASH
  944.     ; create the VATCASH record for current SL transaction
  945.     ; if using a VAT Cash accounting company.
  946.     if $system.vat_cash="Y"
  947.         if #DIFF(SLTRAN.STVATCODE,"N")
  948.             with VATCASH
  949.             ; Using VAT cash accounting
  950.             ; Calculate VAT proportion of receipt.
  951.             ; If creating an allocated receipt or a 
  952.             ; discount (identified by having a blank
  953.             ; VAT code) then set VAT values to zero.
  954.             if #SAME(SLTRAN.STVATCODE,"")
  955.                 SLTRAN.STVAT=0
  956.                 SLTRAN.STVATOUT=0
  957.                 SLTRAN.STVATRATE=0
  958.             else
  959.                 FIND VATRATES VATCODE=SLTRAN.STVATCODE
  960.                 if VATRATES.VATRATE
  961.                     SLTRAN.STVAT=#ROUND(#SUB(SLTRAN.STVALUE,#DIV(SLTRAN.STVALUE,#SUM(1,#DIV(VATRATES.VATRATE,100)))))
  962.                     SLTRAN.STVATOUT=SLTRAN.STVAT
  963.                     SLTRAN.STVATRATE=VATRATES.VATRATE
  964.                 endif
  965.             endif
  966.             NEW VATCASH
  967.                 VCMODULE="S"
  968.                 VCACCOUNT=SLTRAN.STACCOUNT
  969.                 VCTYPE=SLTRAN.STTYPE
  970.                 VCREF=SLTRAN.STREF
  971.                 VCDATE=SLTRAN.STTXNDATE
  972.                 VCVALUE=#NEGATE(SLTRAN.STVALUE)
  973.                 VCVAT=#NEGATE(SLTRAN.STVAT)
  974.                 ; if we posted an allocated receipt
  975.                 ; then set the VCVAT value
  976.                 ; to that set within the form.
  977.                 ; (this also applies for receipts created
  978.                 ;  via 'pay-now' invoices)
  979.                 if SLTRAN.STTYPE="R"
  980.                     if SLTRAN.STALLOC="A"
  981.                         if #SAME(SLTRAN.STVATCODE,"")
  982.                             VCVAT=~VATADJUSTMENT
  983.                         endif
  984.                     endif    
  985.                 endif
  986.                 VCALLOC=SLTRAN.STVATCODE
  987.                 if #DIFF(SLTRAN.STVATCODE,"")
  988.                     VCVATRATE=VATRATES.VATRATE
  989.                 endif
  990.                 ; must additionally create a VATREC record if the
  991.                 ; current new tran. has also been allocated.
  992.                 if SLTRAN.STALLOC="A"
  993.                     SUB SL_VATREC
  994.                 endif
  995.             UPDATE VATCASH
  996.             endwith
  997.         endif
  998.     endif
  999. END
  1000.  
  1001. SUB PL_VATCASH
  1002.     ; create the VATCASH record for current PL transaction
  1003.     ; if using a VAT Cash accounting company.
  1004.     if $system.vat_cash="Y"
  1005.         if #DIFF(PLTRAN.PTVATCODE,"N")
  1006.             with VATCASH
  1007.             ; Using VAT cash accounting
  1008.             ; Calculate VAT proportion of payment.
  1009.             ; If creating an allocated payment or a 
  1010.             ; discount (identified by having a blank
  1011.             ; VAT code) then set VAT values to zero.
  1012.             if #SAME(PLTRAN.PTVATCODE,"")
  1013.                 PLTRAN.PTVAT=0
  1014.                 PLTRAN.PTVATOUT=0
  1015.                 PLTRAN.PTVATRATE=0
  1016.             else
  1017.                 FIND VATRATES VATCODE=PLTRAN.PTVATCODE
  1018.                 if VATRATES.VATRATE
  1019.                     PLTRAN.PTVAT=#ROUND(#SUB(PLTRAN.PTVALUE,#DIV(PLTRAN.PTVALUE,#SUM(1,#DIV(VATRATES.VATRATE,100)))))
  1020.                     PLTRAN.PTVATOUT=PLTRAN.PTVAT
  1021.                     PLTRAN.PTVATRATE=VATRATES.VATRATE
  1022.                 endif
  1023.             endif
  1024.             NEW VATCASH
  1025.                 VCMODULE="P"
  1026.                 VCACCOUNT=PLTRAN.PTCODE
  1027.                 VCTYPE=PLTRAN.PTTXNTYPE
  1028.                 VCREF=PLTRAN.PTREF
  1029.                 VCDATE=PLTRAN.PTTXNDATE
  1030.                 VCVALUE=#NEGATE(PLTRAN.PTVALUE)
  1031.                 VCVAT=#NEGATE(PLTRAN.PTVAT)
  1032.                 ; if we posted an allocated payment
  1033.                 ; then set the VCVAT value
  1034.                 ; to that set within the form.
  1035.                 ; (this also applies for payments created
  1036.                 ;  via 'pay-now' invoices)
  1037.                 if PLTRAN.PTTXNTYPE="P"
  1038.                     if PLTRAN.PTALLOC="A"
  1039.                         if #SAME(PLTRAN.PTVATCODE,"")
  1040.                             VCVAT=~VATADJUSTMENT
  1041.                         endif
  1042.                     endif    
  1043.                 endif
  1044.                 VCALLOC=PLTRAN.PTVATCODE
  1045.                 if #DIFF(PLTRAN.PTVATCODE,"")
  1046.                     VCVATRATE=VATRATES.VATRATE
  1047.                 endif
  1048.                 ; must additionally create a VATREC record if the
  1049.                 ; current new tran. has also been allocated.
  1050.                 if PLTRAN.PTALLOC="A"
  1051.                     SUB PL_VATREC
  1052.                 endif
  1053.             UPDATE VATCASH
  1054.             endwith
  1055.         endif
  1056.     endif
  1057. END
  1058.  
  1059. SUB SL_VATREC
  1060.     ; create the VATREC record for current PL transaction
  1061.     ; if using a VAT Cash accounting company.
  1062.     if $system.vat_cash="Y"
  1063.         with VATREC
  1064.         NEW VATREC
  1065.             VRMODULE="S"
  1066.             VRACCOUNT=SLTRAN.STACCOUNT
  1067.             VRTYPE=SLTRAN.STTYPE
  1068.             VRREF=SLTRAN.STREF
  1069.             VRDATE=SLTRAN.STTXNDATE
  1070.             VRALCDATE=$system_date
  1071.             VRALCBATCH=~alloc_batch
  1072.             VRVALUE=~valuepaid
  1073.             VRVAT=~vatpaid
  1074.             ; if we posted an allocated receipt (not the
  1075.             ; overpayment part) then set the VRVAT value
  1076.             ; to that set within the form.
  1077.             if SLTRAN.STTYPE="R"
  1078.                 if SLTRAN.STALLOC="A"
  1079.                     if #SAME(SLTRAN.STVATCODE,"")
  1080.                         VRVAT=~VATADJUSTMENT
  1081.                         VRVAT=#NEGATE(VRVAT)
  1082.                     endif
  1083.                 endif    
  1084.             endif
  1085.             VRVATCODE=SLTRAN.STVATCODE
  1086.             if #DIFF(SLTRAN.STVATCODE,"")
  1087.                 VRVATRATE=SLTRAN.STVATRATE
  1088.             endif
  1089.         UPDATE VATREC
  1090.         endwith
  1091.     endif
  1092. END
  1093.  
  1094. SUB PL_VATREC
  1095.     ; create the VATREC record for current SL transaction
  1096.     ; if using a VAT Cash accounting company.
  1097.     if $system.vat_cash="Y"
  1098.         with VATREC
  1099.         NEW VATREC
  1100.             VRMODULE="P"
  1101.             VRACCOUNT=PLTRAN.PTCODE
  1102.             VRTYPE=PLTRAN.PTTXNTYPE
  1103.             VRREF=PLTRAN.PTREF
  1104.             VRDATE=PLTRAN.PTTXNDATE
  1105.             VRALCDATE=$system_date
  1106.             VRALCBATCH=~alloc_batch
  1107.             VRVALUE=~valuepaid
  1108.             VRVAT=~vatpaid
  1109.             ; if we posted an allocated payment
  1110.             ; then set the VRVAT value
  1111.             ; to that set within the form.
  1112.             if PLTRAN.PTTXNTYPE="P"
  1113.                 if PLTRAN.PTALLOC="A"
  1114.                     if #SAME(PLTRAN.PTVATCODE,"")
  1115.                         VRVAT=~VATADJUSTMENT
  1116.                         VRVAT=#NEGATE(VRVAT)
  1117.                     endif
  1118.                 endif    
  1119.             endif
  1120.             VRVATCODE=PLTRAN.PTVATCODE
  1121.             if #DIFF(PLTRAN.PTVATCODE,"")
  1122.                 VRVATRATE=PLTRAN.PTVATRATE
  1123.             endif
  1124.         UPDATE VATREC
  1125.         endwith
  1126.     endif
  1127. END
  1128.